package com.wefans.wefansapp.activity;

import java.text.DecimalFormat;
import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v4.widget.DrawerLayout.DrawerListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.wefans.wefansapp.R;
import com.wefans.wefansapp.common.tool.data.MFDataManager;
import com.wefans.wefansapp.common.tool.data.ResGetAppVer;
import com.wefans.wefansapp.common.tool.data.ResGetUser;
import com.wefans.wefansapp.common.tool.data.ResGetVote;
import com.wefans.wefansapp.common.tool.data.ResGetVote.ResGetVoteMainData;
import com.wefans.wefansapp.common.tool.debug.MFDebug;
import com.wefans.wefansapp.common.tool.finals.FEATURES;
import com.wefans.wefansapp.common.tool.network.MFNetworkManager;
import com.wefans.wefansapp.common.tool.network.MFNetworkManager.IOnNetworkListener;
import com.wefans.wefansapp.common.tool.network.model.NetImage;
import com.wefans.wefansapp.common.tool.network.model.NetJsonData;
import com.wefans.wefansapp.common.tool.network.model.NetMessage;
import com.wefans.wefansapp.common.tool.popup.DailyDialog;
import com.wefans.wefansapp.common.tool.popup.DailyDialog.OnDailyListener;
import com.wefans.wefansapp.common.tool.preference.MFSharedPreference;

/**
 * 메인화면(투표하기)
 * 
 * @author kimhyeongbae
 */
public class MainDetailVoteActivity extends BaseActivity implements DrawerListener, IOnNetworkListener
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // final/static property
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    public static final String INTENT_EXTRA_KEY_CHART_IDX     = "INTENT_EXTRA_KEY_CHART_IDX";
    public static final String INTENT_EXTRA_KEY_CATE_IDX      = "INTENT_EXTRA_KEY_CATE_IDX";
    public static final String INTENT_EXTRA_KEY_QUESTION_IDX  = "INTENT_EXTRA_KEY_QUESTION_IDX";
    public static final String INTENT_EXTRA_KEY_NUM           = "INTENT_EXTRA_KEY_NUM";
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // normal property
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    private MFNetworkManager m_oNetworkManager = null;
    private MFDataManager    m_oDataManager    = null;
    
    private String m_strIntentExtraChartIdx    = null;
    private String m_strIntentExtraCateIdx     = null;
    private String m_strIntentExtraQuestionIdx = null;
    private String m_strIntentExtraNum         = null;
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // life-cycle method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_detail_vote);
        
        MFDebug.d(">> onCreate()");
        
        initialize();
        installEvent();
    }

    @Override
    public void finish()
    {
        MFDebug.d(">> finish()");
        
        super.finish();
    }
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // normal method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    private void initialize()
    {
        MFDebug.d(">> initialize()");
        
        m_oNetworkManager = MFNetworkManager.getInstance(this);
        m_oDataManager    = MFDataManager.getInstance(this);
        
        m_strIntentExtraChartIdx    = getIntent().getStringExtra(INTENT_EXTRA_KEY_CHART_IDX);
        m_strIntentExtraCateIdx     = getIntent().getStringExtra(INTENT_EXTRA_KEY_CATE_IDX);
        m_strIntentExtraQuestionIdx = getIntent().getStringExtra(INTENT_EXTRA_KEY_QUESTION_IDX);
        m_strIntentExtraNum         = getIntent().getStringExtra(INTENT_EXTRA_KEY_NUM);
    }
    
    private void installEvent()	
    {
        MFDebug.d(">> installEvent()");
    }
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // network interface
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    @Override
    public void onNetMessage(int resultCode, NetMessage message)
    {
        MFDebug.d(">> onNetMessage()");
        MFDebug.d("++ resultCode : " + resultCode);
        MFDebug.d("++ message : " + message);
        
        try {
            //서버 여동 데이터
            if( message instanceof NetJsonData ) {
                long magicNum = ((NetJsonData) message).getMagicNum();
                String json = ((NetJsonData) message).getResponseJson();
                
                if( json == null ) {
                    throw new Exception("There are NO json data");
                }
                
                Gson gson = new Gson();
                
            }
            //이미지 데이터
            else if( message instanceof NetImage ) {
                String url    = ((NetImage)message).getURL();
                byte[] buffer = ((NetImage)message).getResponseBinary();
                
                if( buffer == null ) {
                    throw new Exception("There are NO image data");
                }
            }
            else {
                //ignore...
            }
        } catch(Exception e) {
            MFDebug.e(e);
        }
    }
    
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // interface method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    @Override
    public void onClick(View v)
    {
        MFDebug.d(">> onClick()");
        
        switch( v.getId() ) {
            default :
                break;
        }
        
        super.onClick(v);
    }

    @Override
    public void onDrawerClosed(View drawerView)
    {
        MFDebug.d(">> onDrawerClosed()");
        MFDebug.d("++ drawerView : " + drawerView);
    }

    @Override
    public void onDrawerOpened(View drawerView)
    {
        MFDebug.d(">> onDrawerOpened()");
        MFDebug.d("++ drawerView : " + drawerView);
    }

    @Override
    public void onDrawerSlide(View drawerView, float slideOffset)
    {
        MFDebug.d(">> onDrawerSlide()");
        MFDebug.d("++ drawerView : " + drawerView);
        MFDebug.d("++ slideOffset : " + slideOffset);
    }

    @Override
    public void onDrawerStateChanged(int newState)
    {
        MFDebug.d(">> onDrawerStateChanged()");
        MFDebug.d("++ newState : " + newState);
        
        String state = null;
        switch (newState) {
        case DrawerLayout.STATE_IDLE:
            state = "STATE_IDLE";
            break;
        case DrawerLayout.STATE_DRAGGING:
            state = "STATE_DRAGGING";
            break;
        case DrawerLayout.STATE_SETTLING:
            state = "STATE_SETTLING";
            break;
        default:
            state = "unknown!";
        }
        MFDebug.d("++ state : " + state);
    }
}
